package com.jsfcompref.model;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.xml.datatype.XMLGregorianCalendar;
import webservices.*;

import javax.xml.ws.WebServiceContext;
import javax.xml.ws.WebServiceRef;

import javax.annotation.Resource;
import javax.imageio.ImageIO;

@ManagedBean
@SessionScoped
public class ColeccionProveedores {
    
    @WebServiceRef(wsdlLocation = "http://190.17.0.161:8080/AgenciaWS/AgenciaWS?wsdl")
    public webservices.AgenciaWS_Service service2;
   
    @Resource
    protected WebServiceContext context2;
    
    
    private List<Proveedor> listaProveedores;

    public List<Proveedor> getListaProveedores() {
        return listaProveedores;
    }

    public void setListaProveedores(List<Proveedor> listaProveedores) {
        this.listaProveedores = listaProveedores;
    }
       
    public String verServicios() throws FileNotFoundException, IOException
    {
        this.post();
        return "servicios";
    }
      
    @PostConstruct
    public void post() throws FileNotFoundException, IOException
    {
      AgenciaWS port2 = service2.getAgenciaWSPort();
      this.setListaProveedores(port2.findAllProveedor());           
           
        Proveedor prov1 = new Proveedor();
        prov1.setRazonSocial("Activa servicios");
        prov1.setUsuario("activa");
        prov1.setPass("activa");
        prov1.setDireccion("Neconchea 545");
        prov1.setPais("Argentina");
        prov1.setEmail("activa@servicios.com.ar");
                
        HotelServicio serv = new HotelServicio();
                
        serv.setId((long)1);
        serv.setDescripcion("Hotel de 5 estrellas");
        serv.setNombre("Amerian Hotel Casino Gala");
        //serv.setProveedor(prov1);
        
        // lo siguiente carga una imagen cruda a un byte[]
        File fil = new File("c:\\tv19.jpg");
        BufferedImage originalImage = ImageIO.read(fil);
        
        serv.getListaImagenes().add(originalImage);
                
        ModeloHabitacion mod1 = new ModeloHabitacion();
        mod1.setId((long)1);
        mod1.setNumeroCamas(2);
        mod1.setNombre("Doble");
        mod1.setPrecio((float)80);
        
        serv.getModelosHabitaciones().add(mod1);
        
        ModeloHabitacion mod2 = new ModeloHabitacion();
        mod2.setId((long)2);
        mod2.setNumeroCamas(3);
        mod2.setNombre("Triple");
        mod2.setPrecio((float)94.2);
        
        serv.getModelosHabitaciones().add(mod2);
        
        ModeloHabitacion mod3 = new ModeloHabitacion();
        mod3.setId((long)3);
        mod3.setNumeroCamas(5);
        mod3.setNombre("Suite Ejecutiva");
        mod3.setPrecio((float)123.7);
        
        serv.getModelosHabitaciones().add(mod3);
        
        Habitacion hab1 = new Habitacion();
        hab1.setId((long)1);
        hab1.setNumero(101);
        hab1.setTipo(mod1);
        
        serv.getHabitaciones().add(hab1);
        
        Habitacion hab2 = new Habitacion();
        hab2.setId((long)2);
        hab2.setNumero(102);
        hab2.setTipo(mod1);
        
        serv.getHabitaciones().add(hab2);
        
        Habitacion hab3 = new Habitacion();
        hab3.setId((long)3);
        hab3.setNumero(103);
        hab3.setTipo(mod1);
        
        serv.getHabitaciones().add(hab3);
        
        Habitacion hab4 = new Habitacion();
        hab4.setId((long)4);
        hab4.setNumero(301);
        hab4.setTipo(mod2);
        
        serv.getHabitaciones().add(hab4);
        
        Habitacion hab5 = new Habitacion();
        hab5.setId((long)5);
        hab5.setNumero(302);
        hab5.setTipo(mod2);
        
        serv.getHabitaciones().add(hab5);
        
        Habitacion hab6 = new Habitacion();
        hab6.setId((long)6);
        hab6.setNumero(401);
        hab6.setTipo(mod3);
        
        serv.getHabitaciones().add(hab6);
        
        prov1.getServicios().add(serv);
       
        Proveedor prov2 = new Proveedor();
        prov2.setRazonSocial("Lemirson servicios");
        prov2.setUsuario("lemir");
        prov2.setPass("lemir");
        prov2.setDireccion("Sta Maria de Oro 125");
        prov2.setPais("Argentina");
        prov2.setEmail("lemirson@argentina.com.ar");
        
        HotelServicio serv2 = new HotelServicio();
        
        serv2.setDescripcion("Lemirson Hotel");
        serv2.setNombre("Hotel de 3 estrellas");
        //serv2.setProveedor(prov2);
        serv2.setId((long)2);
        
        ModeloHabitacion mod10 = new ModeloHabitacion();
        mod10.setId((long)10);
        mod10.setNumeroCamas(2);
        mod10.setNombre("Doble");
        mod10.setPrecio((float)40);
        
        serv2.getModelosHabitaciones().add(mod10);
        
        Habitacion hab10 = new Habitacion();
        hab10.setTipo(mod10);
        hab10.setId((long)11);
        hab10.setNumero(10);
        
        serv2.getHabitaciones().add(hab10);
        
        Habitacion hab11 = new Habitacion();
        hab11.setTipo(mod10);
        hab11.setId((long)12);
        hab11.setNumero(11);
        
        serv2.getHabitaciones().add(hab11);
        
        prov2.getServicios().add(serv2);
        
        TourServicio ts1 = new TourServicio();
        
        Tour tour1 = new Tour();
        
        tour1.setCupo(10);
        tour1.setNombre("Visita al Fogon de los arrieros");
        tour1.setPrecio((float)74.3);
        tour1.setId((long)1);
        
        ts1.getListaToures().add(tour1);
        
        Tour tour2 = new Tour();
        
        tour2.setCupo(30);
        tour2.setNombre("Visita al Perro Fernando");
        tour2.setPrecio((float)24.3);
        tour2.setId((long)2);
               
        ts1.getListaToures().add(tour2);
        
        Tour tour3 = new Tour();
        
        tour3.setCupo(10);
        tour3.setNombre("Muestra de Milo Lockett");
        tour3.setPrecio((float)74.3);
        tour3.setId((long)3);
          
        ts1.getListaToures().add(tour3);
        
        ts1.setId((long)3);
        ts1.setDescripcion("Paquete de tours");
        ts1.setNombre("Tour por Resistencia");
        prov1.getServicios().add(ts1);
        
        TourServicio ts2 = new TourServicio();
        
        Tour tour4 = new Tour();
        
        tour4.setCupo(15);
        tour4.setNombre("Visita a la casa de la memoria");
        tour4.setPrecio((float)24.2);
        tour4.setId((long)4);
        
        ts2.getListaToures().add(tour4);
        
        Tour tour5 = new Tour();
        
        tour5.setCupo(25);
        tour5.setNombre("Visita al museo de bellas artes");
        tour5.setPrecio((float)44.2);
        tour5.setId((long)5);
        
        ts2.getListaToures().add(tour5);
        
        ts2.setId((long)4);
        ts2.setDescripcion("Paquete de tours");
        ts2.setNombre("Tour artistico");
        prov2.getServicios().add(ts2);
        
        AutoServicio aus1 = new AutoServicio();
        aus1.setNombre("Doncar Alquileres");
        aus1.setDescripcion("Alquiler de vehiculos");
        
        ModeloAuto mda1 = new ModeloAuto();
        
        mda1.setId((long)1);
        mda1.setPlazas(4);
        mda1.setNombre("Renault Twingo");
        mda1.setCosto((float)120.2);
        
        
        
        Auto au1 = new Auto();
        au1.setId((long)1);
        au1.setPatente("DVH863");
        au1.setModeloDelAuto(mda1);
        
        Auto au2 = new Auto();
        au2.setId((long)2);
        au2.setPatente("CKJ128");
        au2.setModeloDelAuto(mda1);
        
        Auto au3 = new Auto();
        au3.setId((long)3);
        au3.setPatente("GYM633");
        au3.setModeloDelAuto(mda1);
        
        ModeloAuto mda2 = new ModeloAuto();
        
        mda2.setId((long)2);
        mda2.setPlazas(5);
        mda2.setNombre("Renault Kangoo");
        mda2.setCosto((float)190.00);
        
        Auto au4 = new Auto();
        au4.setId((long)4);
        au4.setPatente("ABC128");
        au4.setModeloDelAuto(mda2);
        
        Auto au5 = new Auto();
        au5.setId((long)5);
        au5.setPatente("DEF128");
        au5.setModeloDelAuto(mda2);
       
        aus1.getModelosAutos().add(mda1);
        aus1.getModelosAutos().add(mda2);
        aus1.getAutos().add(au1);
        aus1.getAutos().add(au2);
        aus1.getAutos().add(au3);
        aus1.getAutos().add(au4);
        aus1.getAutos().add(au5);
        
        prov1.getServicios().add(aus1);
        
        TransporteServicio tnserv = new TransporteServicio();
        tnserv.setNombre("Pulqui viajes");
        tnserv.setDescripcion("Viaje a Pelotillehue");
        
        Ciudad ciu1 = new Ciudad();
        Ciudad ciu2 = new Ciudad();
        Ciudad ciu3 = new Ciudad();
        Ciudad ciu4 = new Ciudad();
        Ciudad ciu5 = new Ciudad();
        
        ciu1.setNombre("Resistencia");
        ciu2.setNombre("Reconquista");
        ciu3.setNombre("Frank");
        ciu4.setNombre("Nelson");
        ciu5.setNombre("Zarate");
        
        Parada par2 = new Parada();
        Parada par3 = new Parada();
        Parada par4 = new Parada();
        Parada par5 = new Parada();
        
       
        par2.setCiudad(ciu2);
        par2.setKmDelOrigen((float)100.0);
        par3.setCiudad(ciu3);
        par3.setKmDelOrigen((float)200.0);
        par4.setCiudad(ciu4);
        par4.setKmDelOrigen((float)500.0);
        par5.setCiudad(ciu5);
        par5.setKmDelOrigen((float)700.0);
        
        Itinerario itin1 = new Itinerario();
        
        itin1.setCiudadOrigen(ciu1);
        itin1.getCiudad().add(par2);
        itin1.getCiudad().add(par3);
        itin1.getCiudad().add(par4);
        itin1.getCiudad().add(par5);
        
        tnserv.setItinerario(itin1);
        
        UnidadTransporte unit1 = new UnidadTransporte();
        unit1.setPatente("DVH863");
        
        ModeloTransporte modtrans1 = new ModeloTransporte();
        modtrans1.setAsientos(55);
        modtrans1.setNombre("Colectivo de 2 pisos");
        modtrans1.setPrecioXKm((float)6.3);
        
        unit1.setModelo(modtrans1);
        tnserv.setUnidadTransporte(unit1);
        
        prov1.getServicios().add(tnserv);
        
        TransporteServicio tnserv2 = new TransporteServicio();
        
        Ciudad ciu6 = new Ciudad();
        Ciudad ciu7 = new Ciudad();
        
        ciu6.setNombre("Obera");
        ciu7.setNombre("Posadas");
        
        Parada par6 = new Parada();
        Parada par7 = new Parada();
        
        par6.setCiudad(ciu6);
        par6.setKmDelOrigen((float)120.0);
        par7.setCiudad(ciu7);
        par7.setKmDelOrigen((float)340.4);
                
        Itinerario itin2 = new Itinerario();
        itin2.setCiudadOrigen(ciu1);
        itin2.getCiudad().add(par6);
        itin2.getCiudad().add(par7);
        
        tnserv2.setItinerario(itin2);
        
        UnidadTransporte unit2 = new UnidadTransporte();
        unit2.setModelo(modtrans1);
        unit2.setPatente("GYM963");
        
        tnserv2.setUnidadTransporte(unit2);
        
        prov1.getServicios().add(tnserv2);
        
        
        this.getListaProveedores().add(prov1);
        //this.getListaProveedores().add(prov2);
      
    }
    
    public void addProv(String email, String RS, String dom, List<Servicio> listaServicios)
    {
       /* 
        Proveedor pr = new Proveedor();
        
        pr.setNombreProv(RS);
        pr.setListaServicios(listaServicios);
        pr.setDomicilio(dom);
        pr.setEmail(email);
        
        BufferedImage img = null;
        File fl = new File("c:/logo.jpg");
                
        try {img = ImageIO.read(fl);}
        catch(IOException e) {}
        
        pr.setLogotipo(img);
        
        listaProveedores.add(pr);
        
        */
    }

    public List<Servicio> getListaServicios()
    {
       List<Servicio> lista = new ArrayList<Servicio>();
       
       return lista;
    }
}
